#ifndef SOCKET_H_
#define SOCKET_H_
// Macro para que no haya problemas con el formato UINT64
#ifdef __cplusplus
#define __STDC_CONSTANT_MACROS
#ifdef _STDINT_H
#undef _STDINT_H
#endif
#include <stdint.h>
#endif
extern "C" {
	#include <libavformat/avformat.h>
	#include <libavformat/avio.h>
	#include <libswscale/swscale.h>
}
#define BACKLOG 15
#define TAM_BLOQUE_INI 5
#define MAXDATASIZE (130000 + FF_INPUT_BUFFER_PADDING_SIZE)

class Socket {
	int fd;

public:
	Socket();
	explicit Socket(int fd);
	bool ignorarAAI();   // Address already in use
	bool enlazar(struct sockaddr_in* serv_addr_ptr);
	bool escuchar();
	bool conectar(struct sockaddr_in* serv_addr_ptr);
	int aceptar();
	bool enviar(const void* info, int tam);
	bool recibir(void* buf, int tam);
	void shutDown();
	virtual ~Socket();
	int getFd();
};

#endif
